//
// Created by Cloud on 2022/4/27.
//
#include <stdio.h>
#define Max 10

enum Sex
{
    MALE,
    FEMALE,
    SECRET
};

int testIgnore() {
//    int num1 = 0;
//    int num2 = 0;
//    int sum = 0;
//    scanf("%d%d",&num1, &num2);

    //scanf strcpy strlen strcat ...这些都是属于不安全的...
    // (如多线程下可能会出现错误?)  所以vs编译器就提供如scanf_s这样类似的参数
//    sum = num2 + num1;
//    printf("sum = %d\n",sum);

//    3;//以下这种为字面常量
//    100;
    // const修饰的是常变量
//    const int num = 4;
//    printf("%d\n",num);
    // 被const修饰了，无法修改num
//    num = 12;

//    int arr[10] = {0};
//    const int size = 10;
    // 如果直接用int size，或者有const int修饰
    // 则会报：Variable-sized object may not be initialized
    // 因为这里长度是需要的是常量来修饰
    // 这里虽然被const修饰了，但是本质上它仍然是变量，为不能变的变量，
    // 还是只能当一个变量来使用。
//    int arr1[size] = {0};
    // const常变量，define标识常量和enum都是枚举常量
//    int arr2[Max] = {0};
    // 没赋值是给自动给定 0,1,2
    printf("%d\n",MALE); // 0
    printf("%d\n",FEMALE); // 1
    printf("%d\n",SECRET); // 2
    enum Sex sex = MALE;
    printf("%d\n",sex); // 0
    sex = FEMALE;
    printf("%d\n",sex); // 1
    // FEMALE = 6; // Expression is not assignable
    // 解释：使用枚举类型创建出来的变量是可以修改的。
    // 枚举里面的默认的常量是不能修改的
    return 3;
}
